package com.tfjybj.itoo.teach.provider.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tfjybj.itoo.teach.entity.TeachClassEntity;
import com.tfjybj.itoo.teach.model.StudentModel;
import com.tfjybj.itoo.teach.model.TeachClassModel;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * TeachClassDao接口
 * teachClass表
 *
 * @author 田成荣
 * @version 2.0.0
 * @since 2.0.0 2018-11-08 19:34:10
 */
@Repository("teachClassDao")
public interface TeachClassDao extends BaseMapper<TeachClassEntity> {
	
	//region 模板生成：模糊查询
	/**
     * 根据上课班名称模糊查询teachClass
     *
     * @param name  上课班名称
     * @return 模糊查询的teachClass集合
     * @author 田成荣
     * @since 2.0.0 2018-11-08 19:34:10
     */
    List<TeachClassModel> queryLikeName(@Param("name") String name);
	//endregion

    /* **********************************以下为非模板生成的内容********************************* */
    /**
     * 根据上课班ID查询剩余容量
     *
     * @param teachClassId
     * @return
     * @author 严文文
     * @since 2.0.0 2 2018-11-14 14:47:06
     */
    int queryRemCapacityByTeachClassId(@Param("teachClassId") String teachClassId);

    /**
     * 据上课班ID更新剩余容量
     *
     * @param teachClassId
     * @param remCapacity
     * @return
     * @author 严文文
     * @since 2.0.0 2 2018-11-14 14:47:06
     */
    int updateRemCapacityByTeachClassId(@Param("teachClassId") String teachClassId, @Param("remCapacity") int remCapacity);


    /**
     * 分页根据关键词模糊查询上课班code和上课班名称
     *
     * @param teachClassCode
     * @param teachClassName
     * @return
     * @author 严文文
     * @since 2.0.0 2018-11-19 21:08:06
     */
    List<TeachClassModel> queryTeachClassInfoByCodeAndNameStrLike(@Param("teachClassCode") String teachClassCode, @Param("teachClassName") String teachClassName);
    /**
     * 分页根据关键词模糊查询上课班code和上课班名称+学年学期
     *
     * @param teachClassCode
     * @param teachClassName
     * @param schoolYear
     * @return
     * @author 胡泽宽
     * @since 2.0.0 2018年11月28日 16:21:09
     */
    List<TeachClassModel> queryTeachClassInfoByCodeAndNameStrLikeorsr(@Param("teachClassCode") String teachClassCode, @Param("teachClassName") String teachClassName, @Param("schoolYear") String schoolYear);



    /**
     *根据上课班id查询学生相关信息
     *
     * @param teachClassId
     * @return
     * @author 严文文
     * @since 2.0.0 2018-11-17 22:05:23
     */
    List<StudentModel> queryClassInfoByTeacherClassId(@Param("teachClassId") String teachClassId);
    /**
     * 根据上课班code查询code是否存在
     *
     * @param teachClassCode
     * @return
     * @return
     * @author 严文文
     * @since 2.0.0 2 2018-11-19 15:51:55
     */
    Integer queryIsExitTeachClassCode(@Param("teachClassCode") String teachClassCode);
    /**
     * 根据上课班名称查询该名称是否存在
     *
     * @param teachClassName
     * @return
     * @author 严文文
     * @since 2.0.0 2 2018-11-19 15:51:55
     */
    String queryIsExitTeachClassName(@Param("teachClassName") String teachClassName);
    /**
     * 查询是否有重复code的上课班
     * @param code
     * @return 重复条数
     */
    Integer  findByCode(@Param("code") String code);

    /**
     * 查询相同课程上课班个数-2017年11月11日 赵尽朝
     *
     * @param teachClassName 拼的上课班名
     * @return 上课班个数
     */
    long selectCount(@Param("teachClassName") String teachClassName);

    /**
     * 根据上课班code查询上课班信息
     *
     * @param teachClassCode
     * @return
     * @author 严文文
     * @since 2.0.0 2018-11-27 15:30:58
     */
    List<TeachClassModel>  findteachClassByCode(@Param("teachClassCode") String teachClassCode);


    /**
     * 根据课程ID和上课班code 查询上课班信息
     * @param courseId
     * @param teachClassCode
     * @return
     * @author 严文文
     * @since 2.0.0 2018-11-27 15:50:060
     */
    String  findIdIsExist(@Param("courseId") String courseId, @Param("teachClassCode") String teachClassCode);

    /**
     * 根据上课班ID查询上课班详情
     *
     * @param idList
     * @return
     * @author 严文文
     * @since 2.0.0 2018-11-28 09:15:39
     */
     List<TeachClassModel>  queryTeachClassInfoByIds(@Param("idList") List<String> idList);


    /**
     * 模糊查询schoolYear, code, name
     * @param schoolYear
     * @param code
     * @param name
     * @return
     * @author 严文文
     * @since 2.0.0 2018-11-28 09:15:39
     */
     List<TeachClassModel> queryByStrLike(@Param("schoolYear") String schoolYear, @Param("code") String code, @Param("name") String name);

    /**
     * 校验code是否存在
     * @param code
     * @return Boolean
     * @author 胡泽宽
     * @since 2.0.0 2018年11月30日 10:54:46
     */
    Integer checkbycode(@Param("code") String code);

    /**
     * 校验name是否存在
     * @param name
     * @return Boolean
     * @author 胡泽宽
     * @since 2.0.0 2018年11月30日 11:26:09
     */
    int checkbyname(@Param("name") String name);

    /**
     * 校验上课班code编辑
     * @param code
     * @return TeachClassEntity
     * @author 胡泽宽
     * @since 2.0.0 2018年12月1日 19:02:28
     */
    TeachClassEntity queryBycode(@Param("code") String code);

    /**
     * 校验上课班name编辑
     * @param name
     * @return TeachClassEntity
     * @author 胡泽宽
     * @since 2.0.0 2018年12月1日 19:16:24
     */
    TeachClassEntity queryByname(String name);

    /**
     * 分页查询所有TeachClass,包括课程code和name
     * @return TeachClassModel
     * @author 严文文
     * @since 2.0.0 2018-11-08 19:34:10
     */
    List<TeachClassModel> queryAll();

    /**
     * 根据上课班code和课程ID查询是否有对应的记录
     * @param code
     * @param courseId
     * @return
     * @author 严文文
     * @since 2.0.0 2018-11-08 19:34:10
     */
    List<TeachClassModel>  findTeachClassByCodeAndCourseId(@Param("code") String code, @Param("courseId") String courseId);
}
